#include "Ennemi.h"
#include <assert.h>

void enemInit(Ennemi* enem)
{
    enem->enem_x=1;
    enem->enem_y=1;
    enem->enem_direction=2;
    enem->enem_indice=-1;
    enem->enem_projectile=0;
}

int enemGetX(const Ennemi* enem)
{
    return enem->enem_x;
}

int enemGetIndice(const Ennemi* e)
{
    return e->enem_indice;
}

void enemSetIndice(Ennemi* enem,int n)
{
    enem->enem_indice=n;
}

void enemSetProjectile(Ennemi* enem,int n)
{
    enem->enem_projectile=n;
}


int enemGetY(const Ennemi* enem)
{
    return enem->enem_y;
}

int enemGetDriection(const Ennemi* enem)
{
    return enem->enem_direction;
}

void enemSetDirection(Ennemi* e,int n)
{
    assert(n>=0);
    assert(n<4);
    e->enem_direction=n;
}

void enemHaut(Ennemi* enem,const Terrain* ter)
{
    if(terPositionValide(ter,enem->enem_x,enem->enem_y-1))
    {
        enem->enem_y=enem->enem_y-1;
        enem->enem_direction=3;
    }
}

void enemBas(Ennemi* enem,const Terrain* ter)
{
    if(terPositionValide(ter,enem->enem_x,enem->enem_y+1))
    {
        enem->enem_y=enem->enem_y+1;
        enem->enem_direction=2;
    }
}

void enemDroit(Ennemi* enem,const Terrain* ter)
{
    if(terPositionValide(ter,enem->enem_x+1,enem->enem_y))
    {
        enem->enem_x=enem->enem_x+1;
        enem->enem_direction=1;
    }
}

void enemGauche(Ennemi* enem,const Terrain* ter)
{
    if(terPositionValide(ter,enem->enem_x-1,enem->enem_y))
    {
        enem->enem_x=enem->enem_x-1;
        enem->enem_direction=0;
    }
}

void enemTestRegression()
{
    Ennemi enem;
    enemInit(&enem);
    assert(enem.enem_x==1);
    assert(enem.enem_y==1);
}

